package main

import "fmt"

func main() {
	// 初始化一个元素为map的slice
	mapslice := make([]map[string]int, 10)

	// 对切片上索引为9的map初始化,给mapslice手动赋值
	mapslice[9] = make(map[string]int, 3)
	mapslice[9]["teacher1"] = 321
	mapslice[9]["teacher2"] = 321
	mapslice[9]["teacher3"] = 321
	// 对切片上索引为0的map初始化,给mapslice手动赋值
	mapslice[0] = make(map[string]int, 3)
	mapslice[0]["student1"] = 321
	mapslice[0]["student2"] = 321
	mapslice[0]["student3"] = 321

	fmt.Println(mapslice)

	// 初始化一个元素为slice的map   key为string value为slice
	slicemap := make(map[string][]string, 10)
	// 给map上key为student的map赋值
	student := "student"
	// 先判断该切片是否为nil
	value1, ok := slicemap[student]
	if !ok {
		value1 = make([]string, 5)
	}
	value1 = append(value1, "张三")
	value1 = append(value1, "李四")

	// 同理
	teacher := "teacher"
	value2, ok := slicemap[teacher]
	if !ok {
		value2 = make([]string, 3)
	}
	value2 = append(value2, "王五")
	value2 = append(value2, "赵六")

	// 打印学生和老师姓名
	fmt.Println(slicemap)

	// 注意！！for range遍历是对原内容的一个拷贝，不能应用与引用类型

}
